<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>sm4测试工具</title>
  <script src="sm4utils.js"></script>

  <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
</head>

<body>
  <div style="text-align:center;">
    <form action="#" method="post">

      <table style="margin-left: auto;margin-right: auto;">
        <!--border=0 cellpadding=0 cellspacing=0-->
        <tr>
          <td style="width:auto;text-align: right;">
            输入密钥<br>(16进制)：
          </td>
          <td style="text-align: left;" valign="middle">
            <textarea rows="5" cols="50" name="keytext" id="keytext">qawsedrftgyhujik</textarea>
          </td>
        </tr>
        <tr>
          <td style="width:auto;text-align: right;">
            输入数据：
          </td>
          <td style="text-align: left;" valign="middle">
            <textarea rows="5" cols="50" name="inputtext" id="inputtext">加密和解密都是用C#就可以完美的解决了。</textarea>
          </td>
        </tr>
        <tr>
          <td style="width:auto;text-align: right;">
            cbc模式IV<br>(16进制)：
          </td>
          <td style="text-align: left;" valign="middle">
            <textarea rows="5" cols="50" name="ivtext" id="ivtext">41036be33171466e9114907562bc70e6</textarea>
          </td>
        </tr>
        <tr>
          <td style="width:auto;text-align: right;">
            结果：
          </td>
          <td style="text-align: left;" valign="middle">
            <textarea rows="5" cols="50" name="resulttext" id="resulttext"></textarea>
          </td>
        </tr>

        <tr>
          <td colspan="2" style="width:auto;text-align: center;">
            <input type="button" value="ECB加密" id="btn_enc_ecb" />
            <input type="button" value="ECB解密" id="btn_dec_ecb" />
            <input type="button" value="CBC加密" id="btn_enc_cbc" />
            <input type="button" value="CBC解密" id="btn_dec_cbc" />
          </td>
        </tr>
      </table>

    </form>
  </div>

  <script>
    /*
    * 测试ecb sm4加密
    */
    $("#btn_enc_ecb").click(function () {

      var inputtext = $("#inputtext").val();
      var inputBytes = inputtext;//Hex.utf8StrToBytes(inputtext);

      var keytext = $("#keytext").val();
      var key = keytext;//Hex.decode(keytext);
      //alert("keytext:" + keytext);
      var sm4 = new sm4utils();
      var cipher = sm4.encrypt_ECB(inputtext, keytext);

      $("#resulttext").val(cipher);
    });

    /*
    * 测试ecb sm4解密
    */
    $("#btn_dec_ecb").click(function () {

      var inputtext = $("#inputtext").val();
      var inputBytes = inputtext;// Hex.decode(inputtext);

      var keytext = $("#keytext").val();
      //alert("keytext:" + keytext);
      var key = keytext;//Hex.decode(keytext);

      var sm4 = new sm4utils();
      var plain = sm4.decrypt_ECB(inputtext, keytext);
      $("#resulttext").val(plain);
    });

    /*
        * 测试cbc sm4加密
        */
    $("#btn_enc_cbc").click(function () {

      var inputtext = $("#inputtext").val();
      var inputBytes = Hex.utf8StrToBytes(inputtext);

      var keytext = $("#keytext").val();
      //var key = Hex.decode(keytext);

      var ivtext = $("#ivtext").val();
      //var iv = Hex.decode(ivtext);

      var sm4 = new sm4utils();
      var cipher = sm4.encrypt_CBC(inputtext, keytext, ivtext);

      $("#resulttext").val(cipher)
    });

    /*
    * 测试cbc sm4解密
    */
    $("#btn_dec_cbc").click(function () {

      var inputtext = $("#inputtext").val();
      // var inputBytes = Hex.decode(inputtext);

      var keytext = $("#keytext").val();
      //var key = Hex.decode(keytext);

      var ivtext = $("#ivtext").val();
      //var iv = Hex.decode(ivtext);

      var sm4 = new sm4utils();
      var plain = sm4.decrypt_CBC(inputtext, keytext, ivtext);
      $("#resulttext").val(plain)
    });


    // var sKey = "qawsedrftgyhujik";
    // var sm4 = new sm4utils(sKey);
    // var data = "加密和解密都是用C#就可以完美的解决了。";

    // var start = new Date().getTime();
    // var endata = sm4.encryptData_ECB(data);
    // var end = new Date().getTime();
    // console.log("加密:" + endata);
    // console.log("加密耗时:" + (end - start) + 'ms');

    // start = new Date().getTime();
    // var dedata = sm4.decryptData_ECB(endata);
    // end = new Date().getTime();
    // console.log("解密耗时:" + (end - start) + 'ms');

    // console.log("dedata:", dedata);
  </script>
</body>

</html>